package com.maiko.maikoaiagent.demo.invoke;

import jakarta.annotation.Resource;
import org.springframework.ai.chat.messages.AssistantMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

/**
 * Spring Boot启动时自动执行的类，实现了CommandLineRunner接口。
 * 用于调用阿里云DashScope大模型服务进行一次问答交互。
 */
@Component // 让Spring扫描并注入为一个 Bean
public class SpringAiAiInvoke implements CommandLineRunner {

    /**
     * 注入DashScope的ChatModel实例（需要你已配置好DashScope SDK的认证等信息）
     * ChatModel是SDK中的主要接口，用于发 prompt并获取AI回复
     */
    @Resource
    private ChatModel dashscopeChatModel;

    /**
     * 实现CommandLineRunner接口，在Spring Boot启动完成后自动执行。
     * 用于向大模型发送一条消息并输出返回结果。
     *
     * @param args 启动参数（一般不使用）
     * @throws Exception 可能抛出的异常
     */
    @Override
    public void run(String... args) throws Exception {
        // 构造提示语 prompt，发送给 AI 模型
        Prompt prompt = new Prompt("你好，我是Maiko");

        // 调用模型，并获取返回的结果
        AssistantMessage output = dashscopeChatModel
                .call(prompt)        // 发送 prompt
                .getResult()         // 获取封装的调用结果
                .getOutput();        // 提取实际输出内容（Assistant 的回复）

        // 打印模型回复内容
        System.out.println(output.getText());
    }
}

